<?php

if (!class_exists('ItemCat', false)) {
    /**
     * 类目数据处理
     *
     * @author Akon(番茄红了) <aultoale@gmail.com>
     */
    class CLI_ItemCat extends CLI
    {
        /**
         * 修正类目路径数据
         */
        public static function fixpath()
        {
            // 清除路径信息
            $set = array('cat_path' => '');
            DB::update('item_cats')->set($set)->where('parent_cid','=',0)->execute();

            // 根类目路径
            $set = array('cat_path' => DB::expr("CONCAT(cid, ';')"));
            DB::update('item_cats')->set($set)->where('parent_cid', '=', 0)->execute();

            // 子类目路径
            for ($i=0; $i<5; $i++) {
                DB::query(Database::UPDATE, "UPDATE item_cats AS c
SET cat_path=CONCAT(
    (SELECT cat_path FROM (SELECT cid,cat_path FROM item_cats) AS tmp WHERE cid=c.parent_cid), cid, ';'
) WHERE parent_cid > 0")->execute();
            }
        }

        /**
         * 统计类目信息(产品/商品数量)
         */
        public static function countNums()
        {
            $rows = DB::select('c.cid', array(DB::expr('COUNT(*)'),'product_nums'))
                ->from(array('item_cats', 'c'))
                ->join(array('products', 'p'))
                ->on('p.cid', '=', 'c.cid')
                ->group_by('cid')
                ->fetch_all();
            foreach ($rows as $row) {
                $set = array('product_nums' => $row['product_nums']);
                DB::update('item_cats')->set($set)->where('cid', '=', $row['cid'])->execute();
            }

            $cats = DB::select()
                ->from('item_cats')
                ->where('is_parent', '=', 1)
                ->fetch_all();
            foreach ($cats as $cat) {
                $product_nums = DB::select(DB::expr('SUM(product_nums)'))
                    ->from('item_cats')
                    ->where('is_parent', '=', 0)
                    ->where('cat_path', 'LIKE', $cat['cat_path']."%")
                    ->fetch_one();
                $set = array('product_nums' => $product_nums);
                DB::update('item_cats')->set($set)->where('cid', '=', $cat['cid'])->execute();
            }
        }


		
		/**
		 * 修正与统计，用于crontab
		 *
		 * @param	none
		 * @access	public
		 * @return	void
		 * @update	date time
		*/
		public static function fixpath_countnums()
		{
		    ItemCat::fixpath();
			ItemCat::countNums();
		} // end func
    }
}


// 修正类目路径数据，统计类目信息(产品/商品数量)
ItemCat::fixpath_countnums();

/**
 * 下载类目数据
 *
 * @author Akon(番茄红了) <aultoale@gmail.com>

$catsMenu = <<<EOF

---------------------------

 1、下载类目数据

 2、修正类目路径数据

 3、统计类目信息(产品/商品数量)

 0、返回

---------------------------

请选择 (0,1,2,3)：
EOF;

do {
    // 显示菜单
    $input = CLI::input($catsMenu);

   // 下载类目数据
    if ($input == 1) {

        $input = CLI::input("\n请输入父类目ID（多个类目请使用逗号分隔）：");

        CLI::output("\n信息：尚未开发完成！\n");

    // 修正类目路径数据
    } elseif ($input == 2) {

        ItemCat::fixpath();

        CLI::output("\n信息：类目路径数据完成 √\n");

    // 统计类目信息(产品/商品数量)
    } elseif ($input == 3) {

        ItemCat::countNums();

        CLI::output("\n信息：类目信息统计完成 √\n");

    // 返回
    } else {
        break;
    }

    CLI::input("\n请按下回车键继续！");

} while (true);

unset($catsMenu);
 */